package org.lanqiao.tjut.db;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;

public class DBDriver {
	/**
	 * DBUtils数据库查询操作
	 * 
	 * 
	 * 
	 * @param sql
	 *            查询语句
	 * @param rsh
	 *            返回结果集类型句柄，可以选择一下类型作为返回结果集的句柄 ArrayHandler
	 *            将ResultSet转为一个Object[]的ResultSetHandler实现类 ArrayListHandler
	 *            将ResultSet转换为List<Object[]>的ResultSetHandler实现类 BeanHandler
	 *            将ResultSet行转换为一个JavaBean的ResultSetHandler实现类 BeanListHandler
	 *            将ResultSet转换为List<JavaBean>的ResultSetHandler实现类（经常使用※）
	 *            ColumnListHandler
	 *            将ResultSet的一个列转换为List<Object>的ResultSetHandler实现类 KeyedHandler
	 *            将ResultSet转换为Map<Map>的ResultSetHandler实现类 MapHandler
	 *            将ResultSet的首行转换为一个Map的ResultSetHandler实现类 MapListHandler
	 *            将ResultSet转换为List<Map>的ResultSetHandler实现类 ScalarHandler
	 *            将ResultSet的一个列到一个对象。
	 * 
	 * @param params
	 *            查询语句的参数
	 * @return 查询结果集
	 */
	public <T> T query(String sql, ResultSetHandler<T> rsh, Object... params) {
		// 返回值
		T tRe = null;
		try {
			// 创建dbutils的查询处理类 QueryRunner的实例对象
			QueryRunner qr = new QueryRunner(DBSource.getDataSource(),true);
			// 使用queryrunner进行查询操作
			tRe = qr.query(sql, rsh, params);
		} catch (SQLException e) {
			// DBUtils数据库查询操作异常
			System.out.println("DBUtils数据库查询操作异常:" + e.getMessage());
			e.printStackTrace();
		}
		// 返回结果集
		return tRe;
	}

	/**
	 * DBUtils数据库新增、修改、删除操作
	 * 
	 * @param sql
	 *            数据库新增、修改、删除操作语句
	 * @param params
	 *            数据库新增、修改、删除操作语句的参数
	 * @return 数据库新增、修改、删除操作所影响记录行数
	 */
	public int update(String sql, Object... params) {
		// 返回值
		int iRe = 0;
		try {
			// 创建dbutils的更新处理类 QueryRunner的实例对象
			QueryRunner qr = new QueryRunner(DBSource.getDataSource(),true);
			// 使用queryrunner进行数据库新增、修改、删除操作
			iRe = qr.update(sql, params);
		} catch (SQLException e) {
			// DBUtils数据库新增、修改、删除操作异常
			System.out.println("DBUtils数据库新增、修改、删除操作异常:" + e.getMessage());
			e.printStackTrace();
		}
		// 返回结果集
		return iRe;
	}
}
